home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HyperLib 1997 Winter - Disc 1
/
HYPERLIB-1997-Winter-CD1.ISO.7z
/
HYPERLIB-1997-Winter-CD1.ISO
/
オンラインウェア
/
UTIL
/
Folder・Icon・Opener 1.0.1.sit
/
Folder•Icon•Opener 1.0.1
/
source code
/
sources
/
FIOpen.menu.c
< prev
next >
Wrap
Text File
|
1996-05-05
|
5KB
|
222 lines
/*
*--------------------------------------------------------------
* FIOpen.menu.c
*--------------------------------------------------------------
* Copyright ゥ Fumio Rokkaku, 1996
*--------------------------------------------------------------
*/
#pragma once
/* System Headers */
#include <Memory.h>
#include <QuickDraw.h>
#include <Menus.h>
#include <Windows.h>
#include <Dialogs.h>
#include <Desk.h>
#include <OSUtils.h>
#include <Events.h>
#include <StandardFile.h>
/* Project Headers */
#include "FIOpen.h"
/* constant definitions */
enum constMenuIDs {
kMenuBarID = kBaseID,
mAppleID = kBaseID,
mFileID,
mEditID
};
enum constMenuItems {
miAboutMe = 1,
miFileOpen = 1,
miFileClose = 2,
miFileQuit = 4
};
/*
*--------------------------------------------------------------
* static functions only used in this source
*--------------------------------------------------------------
*/
static void DoAppleMenu(const short);
static void DoFileMenu(const short);
static void DoEditMenu(const short);
static Boolean EnabeMyMItem(MenuRef, short, Boolean);
/*
*--------------------------------------------------------------
* macro
*--------------------------------------------------------------
*/
Boolean IsEnabled(MenuRef, const short);
#define IsEnabled(mH, item) ((**mH).enableFlags & (1 << item))
/*
*--------------------------------------------------------------
* SetUpMyMenus
*--------------------------------------------------------------
* build up menus
*--------------------------------------------------------------
*/
Boolean SetUpMyMenus(void)
{
Handle aMenuBar;
aMenuBar = GetNewMBar(kBaseID);
if (aMenuBar != nil) {
/* set menus in menu bar */
SetMenuBar(aMenuBar);
DisposeHandle(aMenuBar);
/* set DeskAccesories */
AppendResMenu(GetMenuHandle(mAppleID), 'DRVR');
DrawMenuBar();
return (true);
}
return (false);
}
/*
*--------------------------------------------------------------
* DoMenus
*--------------------------------------------------------------
* Handle the menu selection. menuSelect is what MenuSelect()
* and MenuKey() return: the high word is the menu ID,
* the low word is the menu item
*--------------------------------------------------------------
*/
void DoMenus(const long menuSelect)
{
short menuID = HiWord(menuSelect);
short menuItm = LoWord(menuSelect);
switch (menuID) {
case mAppleID: DoAppleMenu(menuItm); break;
case mFileID: DoFileMenu(menuItm); break;
case mEditID:
if (SystemEdit(menuItm -1) == false) {
DoEditMenu(menuItm);
}
break;
}
HiliteMenu(0);
}
/*
*--------------------------------------------------------------
* DoAppleMenu
*--------------------------------------------------------------
* handle Apple menu item
*--------------------------------------------------------------
*/
static void DoAppleMenu(const short theItem)
{
switch (theItem) {
case miAboutMe:
OpenAboutDialog();
break;
default:
{ /* Desk Accessories */
GrafPtr savePort;
Str255 aDAName;
GetPort(&savePort);
GetMenuItemText(GetMenuHandle(mAppleID), theItem, aDAName);
OpenDeskAcc(aDAName);
SetPort(savePort);
}
break;
}
}
/*
*--------------------------------------------------------------
* DoFileMenu
*--------------------------------------------------------------
* handle file menu item
*--------------------------------------------------------------
*/
static void DoFileMenu(const short theItem)
{
switch (theItem) {
case miFileOpen:
{
StandardFileReply aReply;
CustomGetFolderOnly(&aReply);
if (aReply.sfGood) {
OpenFolderIcon(&aReply.sfFile);
}
}
break;
case miFileClose:
if (GetWRefCon(FrontWindow()) == kAboutType) {
CloseAboutDialog();
}
break;
case miFileQuit:
gDone = true;
break;
}
}
/*
*--------------------------------------------------------------
* DoEditMenu
*--------------------------------------------------------------
* handle edit text item
*--------------------------------------------------------------
*/
static void DoEditMenu(const short theItem)
{
#pragma unused (theItem)
}
/*
/*
*--------------------------------------------------------------
* AdjustMyMenus
*--------------------------------------------------------------
*/
void AdjustMyMenus(void)
{
MenuRef aMenu;
Boolean nowAbout = IsAboutDialog();
Boolean redraw = false;
/* maitain Apple menu */
aMenu = GetMenuHandle(mAppleID);
redraw |= EnabeMyMItem(aMenu, miAboutMe, !nowAbout);
/* maitain File menu */
aMenu = GetMenuHandle(mFileID);
redraw |= EnabeMyMItem(aMenu, miFileClose, nowAbout);
/* maitain Edit menu */
aMenu = GetMenuHandle(mEditID);
redraw |= EnabeMyMItem(aMenu, 0, false);
if (redraw) {
/* draw menu bar if needed */
DrawMenuBar();
}
}
/*
*--------------------------------------------------------------
* EnabeMyMItem
*--------------------------------------------------------------
* enable or disable menu item according to the conditon
*--------------------------------------------------------------
*/
static Boolean EnabeMyMItem(MenuRef theMenu, short item, Boolean activate)
{
Boolean redraw;
if (activate) {
redraw = (IsEnabled(theMenu, item)) ? false : true;
EnableItem(theMenu, item);
} else {
redraw = (IsEnabled(theMenu, item)) ? true : false;
DisableItem(theMenu, item);
}
return (redraw);
}